//package com.cpx.service.impl;
//
//import com.cpx.config.RedisUtils;
//import com.cpx.service.PanicBuyingService;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.data.redis.core.RedisTemplate;
//import org.springframework.web.bind.annotation.RequestParam;
//import org.springframework.web.bind.annotation.RestController;
//
///**
// * @Auther: PanBin
// * @Date: 2018-9-21 14:44
// * @Description: 抢购的业务实现
// * @Version: 1.0
// */
//@RestController
//public class PanicBuyingServiceImpl implements PanicBuyingService {
//
//    @Autowired
//    RedisTemplate<String, Object> redisTemplate;
//
//    @Override
//    public boolean seckill(@RequestParam("key") String key) {
//        RedisUtils redisUtils = new RedisUtils(redisTemplate, key, 10000, 20000);
//        try {
//            //获取锁
//            if (redisUtils.lock()) {
//                // 需要加锁的代码
//                Object mate20ProNumber = redisUtils.get("mate20ProNumber");
//                //修改库存
//                if (mate20ProNumber != null && Integer.parseInt(mate20ProNumber.toString()) - 1 >= 0) {
//                    redisUtils.set("mate20ProNumber", String.valueOf(Integer.parseInt(mate20ProNumber.toString()) - 1));
//                    System.out.println("库存数量:" + mate20ProNumber + " 成功!!!" + Thread.currentThread().getName());
//                    return true;
//                } else {
//                    System.out.println("手慢拍大腿");
//                    return false;
//                }
//            }
//        } catch (InterruptedException e) {
//            e.printStackTrace();
//        } finally {
//            // 为了让分布式锁的算法更稳键些，持有锁的客户端在解锁之前应该再检查一次自己的锁是否已经超时，再去做DEL操作，因为可能客户端因为某个耗时的操作而挂起，
//            // 操作完的时候锁因为超时已经被别人获得，这时就不必解锁了。 ————这里没有做
//            redisUtils.unlock();
//        }
//        return false;
//    }
//}
